#ifndef OPERATORNODE_HPP
# define OPERATORNODE_HPP

# include "ExpressionNode.hpp"

class OperatorNode : public ExpressionNode
{
public:
    OperatorNode();
    OperatorNode(int p_operator);
    virtual ~OperatorNode();

public:
    virtual Tribool solve(Universe& universe);
    virtual void addChild(ExpressionNode*);
    virtual ExpressionNode* clone(std::map<int, ExpressionNode*>& existingNodes);
    virtual NodeType::Type getType() const;

public:
    void setLeft(ExpressionNode* left);
    void setRight(ExpressionNode* right);

private:
    int _operator;
    ExpressionNode* _left;
    ExpressionNode* _right;   
};

#endif // OPERATORNODE_HPP
